package org.moore.view;

import org.moore.utils.ScoreUtils;

import javax.swing.*;
import java.awt.*;

import static org.moore.utils.Button.getjButton;

// 排行榜界面类
public class RankingListFrame extends JFrame {
	// 界面主界面文本
    private final JLabel listTitle = new JLabel("排行榜");
    // 文本域
    private final JTextArea area = new JTextArea();
    // 滚动条
    private final JScrollPane scrollBar = new JScrollPane();
    // 游戏模式
    private int gameMode = 1;
    // 游戏等级
    private int gameLevel = 1;
    // 设置字体
    private final Font titleFont = new Font("宋体", Font.PLAIN, 25);
    private final Font font = new Font("宋体", Font.PLAIN, 20);

    public RankingListFrame() {
        // 设置绝对布局
        this.setLayout(null);
        // 初始化数据
        this.createUI();
        // 设置窗口标题
        this.setTitle("排行榜");
        // 设置窗口大小
        this.setSize(500, 500);
        // 居中
        this.setLocationRelativeTo(null);
        // 设置窗口关闭结束程序
        this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
        // 设置窗口不可改变大小
        this.setResizable(false);
        // 设置面板
        JPanel panel = new JPanel();
        panel.setLayout(new BorderLayout());
    }

    public void createUI() {
        // 排行榜标题
        listTitle.setBounds(200, 20, 150, 30);
        listTitle.setFont(titleFont);
        this.add(listTitle);
        // 时间按钮
        JButton timeBtn = getjButton(null, font);
        // 步数按钮
        JButton stepsBtn = getjButton(null, font);
        // 设置步数按钮
        timeBtn.setBounds(-10,400,100,30);
        timeBtn.setText("时间");
        timeBtn.setForeground(Color.BLACK);
        timeBtn.addActionListener(e -> {
            gameMode = 2;
            area.setText(ScoreUtils.showScore(gameMode,gameLevel));
            timeBtn.setForeground(Color.RED);
            stepsBtn.setForeground(Color.BLACK);
        });
        this.add(timeBtn);
        // 设置时间按钮
        stepsBtn.setBounds(100,400,100,30);
        stepsBtn.setText("步数");
        stepsBtn.addActionListener(e -> {
            gameMode = 1;
            area.setText(ScoreUtils.showScore(gameMode,gameLevel));
            timeBtn.setForeground(Color.BLACK);
            stepsBtn.setForeground(Color.RED);
        });
        stepsBtn.setForeground(Color.RED);
        this.add(stepsBtn);
        // 初级按钮
        JButton lowerBtn = getjButton(null, font);
        // 中级按钮
        JButton middenBtn = getjButton(null, font);
        // 高级按钮
        JButton premiumBtn = getjButton(null, font);
        // 设置初级按钮
        lowerBtn.setBounds(200,400,100,30);
        lowerBtn.setText("初级");
        lowerBtn.addActionListener(e -> {
            gameLevel = 1;
            area.setText(ScoreUtils.showScore(gameMode,gameLevel));
            lowerBtn.setForeground(Color.RED);
            middenBtn.setForeground(Color.BLACK);
            premiumBtn.setForeground(Color.BLACK);
        });
        lowerBtn.setForeground(Color.RED);
        this.add(lowerBtn);
        // 设置中级按钮
        middenBtn.setBounds(300,400,100,30);
        middenBtn.setText("中级");
        middenBtn.addActionListener(e -> {
            gameLevel = 2;
            area.setText(ScoreUtils.showScore(gameMode,gameLevel));
            lowerBtn.setForeground(Color.BLACK);
            middenBtn.setForeground(Color.RED);
            premiumBtn.setForeground(Color.BLACK);
        });
        middenBtn.setForeground(Color.BLACK);
        this.add(middenBtn);
        // 设置高级按钮
        premiumBtn.setBounds(400,400,100,30);
        premiumBtn.setText("高级");
        premiumBtn.addActionListener(e -> {
            gameLevel = 3;
            area.setText(ScoreUtils.showScore(gameMode,gameLevel));
            lowerBtn.setForeground(Color.BLACK);
            middenBtn.setForeground(Color.BLACK);
            premiumBtn.setForeground(Color.RED);
        });
        premiumBtn.setForeground(Color.BLACK);
        this.add(premiumBtn);
        // 添加文本域
        area.setFont(font);
        area.setOpaque(false);
        area.setText(ScoreUtils.showScore(gameMode,gameLevel));
        area.setEditable(false);
        // 设置文本域
        scrollBar.setBounds(20,50,450,350);
        this.add(scrollBar);
        scrollBar.setViewportView(area);
        scrollBar.setOpaque(false);
        scrollBar.getViewport().setOpaque(false);
    }

}
